.TH std::chrono::treat_as_floating_point 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::chrono::treat_as_floating_point \- std::chrono::treat_as_floating_point

.SH Synopsis
   Defined in header <chrono>
   template< class Rep >                                             \fI(since C++11)\fP
   struct treat_as_floating_point : std::is_floating_point<Rep> {};

   The std::chrono::treat_as_floating_point trait helps determine if a duration can be
   converted to another duration with a different tick period.

   Implicit conversions between two durations normally depends on the tick period of
   the durations. However, implicit conversions can happen regardless of tick period if
   std::chrono::treat_as_floating_point<Rep>::value == true.

.SH Specializations

   std::chrono::treat_as_floating_point may be specialized for program-defined types.

.SH Example


// Run this code

 #include <chrono>
 #include <iostream>
 #include <thread>

 void timed_piece_of_code()
 {
     std::chrono::milliseconds simulated_work(2);
     std::this_thread::sleep_for(simulated_work);
 }

 int main()
 {
     auto start = std::chrono::high_resolution_clock::now();

     std::cout << "Running some timed piece of code...\\n";
     timed_piece_of_code();

     auto stop = std::chrono::high_resolution_clock::now();

     // A floating point milliseconds type
     using FpMilliseconds =
         std::chrono::duration<float, std::chrono::milliseconds::period>;

     static_assert(std::chrono::treat_as_floating_point<FpMilliseconds::rep>::value,
                   "Rep required to be floating point");

     // Note that implicit conversion is not allowed here
     auto i_ms = std::chrono::duration_cast<std::chrono::milliseconds>(stop - start);

     // Note that implicit conversion is allowed here
     auto f_ms = FpMilliseconds(stop - start);

     std::cout << "Timing stats:\\n";

     std::cout << "  Time in milliseconds, using default rep: "
               << i_ms.count() << '\\n';

     std::cout << "  Time in milliseconds, using floating point rep: "
               << f_ms.count() << '\\n';
 }

.SH Possible output:

 Running some timed piece of code...
 Timing stats:
   Time in milliseconds, using default rep: 2
   Time in milliseconds, using floating point rep: 2.57307

.SH See also
